#ifndef GAME_H
#define GAME_H

#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>

#include "../engine/core/Global.h"

#include "object/Player.h"
#include "../engine/core/Updater.h"
#include "../engine/core/io/LevelBuilder.h"
#include "../engine/collider/CollisionDetector.h"

class Hud;
class Renderer;
class World;

class Game {
    private: // data members
        sf::RenderWindow* window;
        Hud* hud;

        Updater* updater;
        Renderer* renderer;

        World* world;
        Camera* camera;
        Light* light;
        CollisionDetector* collisionDetector;

        bool running;

    public: // functions
        Game();
        virtual ~Game();

        void build();
        void run();
        void stop();

    private:
        void control();
};

#endif // GAME_H
